# 引入django框架中http模块 HttpResponse函数
import math

from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect
from mydjango.models import Users
from mydjango.models import Goods
from mydjango.models import Cars


# 设置处理函数
def hw(requset):
     return HttpResponse('<h1 align="center" style="color:red;">你好！</h1>')
def index(request):
     name = request.GET.get('name')
     stuname = "xjl"
     grade = 45
     good = {'id': 1, 'name': '西瓜', 'imgsrc': '/static/img/1000.jpg', 'price': 3.9, 'count': 4}
     # goods = [
     #      {'id': 1, 'name': '西瓜', 'imgsrc': '/static/img/1000.jpg', 'price': 3.9, 'count': 4},
     #      {'id': 2, 'name': '苹果', 'imgsrc': '/static/img/1000.jpg', 'price': 3.9, 'count': 4},
     #      {'id': 3, 'name': '香蕉', 'imgsrc': '/static/img/1000.jpg', 'price': 3.9, 'count': 4},
     #      {'id': 4, 'name': '橘子', 'imgsrc': '/static/img/1000.jpg', 'price': 3.9, 'count': 4}
     # ]
     #接收前端传递  keyword
     keyword = request.GET.get('keywords')
     if keyword:
          goods = Goods.objects.filter(name__contains=keyword)
     else:
          goods = Goods.objects.all()
     #给前端传递的页码列表 pagelist [1.2.3...] len方法 获取列表长度
     #封装函数range(start,end) 自动生成从start开始（包含）到end结束（不包含）的列表
     pagelist = range(1,math.ceil(len(goods)/5)+1)
     # 接收  前端传递的 页码  参数
     page = request.GET.get('page')
     if page:
          #有值  字符串  转换为  整数
          page = int(page)
     else:
          # 无值
          page = 1
     # 截取数据查询的结果的前5个
     # 利用列表切片
     goods = goods[5*(page-1):5*page]
     return render(request, "index.html", {'pagelist':pagelist, "goods": goods, "name": name, "stuname": stuname, "grade": grade})

def login(request):
     if request.POST:
          username = request.POST.get('username')
          userpsd = request.POST.get('userpsd')
                      #指的是数据库里面的username     账号名
          result = Users.objects.filter(username=username, userpsd=userpsd)
          # print(result[0].username)
          if result:
               #判断一下  当前有值的账号对应的密码是否匹配
               if result[0].userpsd == userpsd:
                    #return HttpResponse('登录成功！')
                    #return render(request,'index.html')
                    # 设置 session会话存储
                    request.session['uid'] = result[0].uid
                    return redirect('/index/?name='+result[0].username)     #重定向路由
               else:
                    # 账号存在  密码错误
                    return redirect(request, 'login.html')
          else:
               # 账号不存在
               # return HttpResponse('登录失败！')
               return render(request, "register.html")
          # return render(request, "login.html")
     return render(request,'login.html')



     ##老师上课
def register(request):
     if request.POST:
          username = request.POST.get('username')
          userpsd = request.POST.get('userpsd')
          # 插入数据库
          ## 将用户类  实例化 对象
          # user1 = Users(uid=1,username=username,userpsd=userpsd)
          # ## 数据保存
          # user1.save()
          Users.objects.create(uid=None,username=username,userpsd=userpsd)

     return render(request, 'register.html')




# http超文本标记语言
def nav(request):
     one = [
          {'院系设置': [
               {'理工农学院': ['计算机技术与科学', '软件工程', '土木建筑', '园艺设计']},
               {'文艺法学院': ['专业1', '专业2', '专业3', '专业4']},
               {'经管学院': ['专业5', '专业6', '专业7', '专业8']},
               {'医学院': ['专业9', '专业10', '专业11', '专业12']}
          ]},
          {'师资团队': ['师资团队1', '师资团队2', '师资团队3']},
          {'科学研究': ['科学研究1', '科学研究2']},
          {'招生就业': ['招生就业']},
     ]
     return render(request, 'nav.html', {'one': one})

def goodinfo(request):
     gid = request.GET.get('gid')
     # 接收详情页 加入购物车传递 商品id POST请求
     if request.POST:
        if request.session.get('uid',None):
         gid = request.POST.get('gid')
         uid = request.session['uid']
         car = Cars(gid=gid,buy_count=1,uid=uid)
         car.save()
        else:
          return redirect('/login/')
     # 根据参数执行数据库操作 条件查询 filter
     goods = Goods.objects.filter(gid=gid)

     # car_gid = request.GET.get('car_gid')
     # if car_gid:
     #     Cars.objects.create(cid=None, gid=car_gid, buy_count=1)
     #     goods = Goods.objects.filter(gid=car_gid)
     return render(request, 'goodinfo.html', {'goods':goods})

def shoppingcar(request):
 if request.session.get('uid',None):
     # 获取 session中的uid
     uid = request.session['uid']
     # 数据库操作 查询操作 购物车表
     cars = Cars.objects.filter(uid=uid)
     # 数据库查询结果 cars【{cid,gid,buy_count,uid}...】
     goods = []
     for item in cars:
          good = Goods.objects.filter(gid=item.gid)[0]
          good.buy_count = item.buy_count
          good.allprice = good.price * good.buy_count
          goods.append(good)
     return render(request,'shoppingcar.html')
 else:
     return redirect('/login/')

def loginout(request):
    # 业务处理 数据处理
    # 都可以 退出登录
    # 删除session对象中uid键值对 实质对数据中session表修改session_data字段值
    # request.session.pop('uid')
    # del request.session['uid']
    # request.session.clear()
    # 删除数据库中的session表对应记录/数据
    # request.session.delete(request.session.session_key)
    request.session.flush()
    return redirect('/index/')







